package com.xuanwei.core.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.xuanwei.core.entity.vo.ProductListVo;
import com.xuanwei.core.entity.param.Navigate;
import com.xuanwei.dao.entity.XwHomepageNavigate;
import com.xuanwei.dao.entity.XwProduct;

import java.util.List;

/**
 * <p>
 * 首页导航 服务类
 * </p>
 *
 * @author mjy
 * @since 2019-07-30
 */
public interface IXwHomepageNavigateService extends IService<XwHomepageNavigate> {

    /**
     * 添加或修改
     *
     * @param navigate 参数
     */
    void addOrUpdate(Navigate navigate);

    /**
     * 修改状态
     *
     * @param id ID
     */
    void changeStatus(Integer id);

    /**
     * 所有列表
     *
     * @return 集合
     */
    List<XwHomepageNavigate> all();

    /**
     * 删除
     *
     * @param id ID
     */
    void delete(Integer id);

    /**
     * 所有展示列表
     *
     * @return 集合
     */
    List<Navigate> showList();

    /**
     * 添加商品到导航
     *
     * @param id         ID
     * @param productIds 商品集合
     */
    void addProductToNavigate(Integer id, List<Integer> productIds);

    /**
     * 该导航所有商品
     *
     * @param id Id
     * @return 商品集合
     */
    List<ProductListVo> findProductById(Integer id);


    /**
     * 从该导航移除商品
     *
     * @param id 商品ID
     */
    void removeProduct(Integer id);


    /**
     * 搜索商品列表
     *
     * @param id        ID
     * @param productId 商品ID
     * @param name      名称
     * @param page      分页
     * @return
     */
    Page<ProductListVo> searchProductList(Integer id, Integer productId, String name, Page<XwProduct> page);


    /**
     * 商品是否存在该活动
     *
     * @param productId 商品Id
     * @param activityId 活动ID
     * @return
     */
    boolean isExist(Integer productId, Integer activityId);
}
